{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "\n",
    "import numpy as np\n",
    "from sklearn.datasets import load_boston\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import make_scorer\n",
    "from sklearn.linear_model import LinearRegression,Ridge,LogisticRegression\n",
    "from vecstack import stacking\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import  utils as UTILS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [],
   "source": [
    "# load data \n",
    "all_data = pd.read_csv(r'E:\\02Projects\\papers\\chlmodel\\data\\seawifs\\03 augment\\train_dataset-aug-features.csv')\n",
    "all_data.head(10)\n",
    "\n",
    "X_train,y_train,X_test,y_test = UTILS.chloropyll_split_train_test(all_data)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "===========================\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "X_train,X_test,scaler = UTILS.scaler_data(X_train,X_test)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 引入依赖包"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "from sklearn.linear_model import ElasticNet, Lasso,  BayesianRidge, LassoLarsIC,LinearRegression\n",
    "from sklearn.ensemble import RandomForestRegressor,  GradientBoostingRegressor\n",
    "from sklearn.kernel_ridge import KernelRidge\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import RobustScaler\n",
    "from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin, clone\n",
    "from sklearn.model_selection import KFold, cross_val_score, train_test_split\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import xgboost as xgb\n",
    "import lightgbm as lgb"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 定义单个模型"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestRegressor\n",
    "model_rfr=RandomForestRegressor()\n",
    "\n",
    "\n",
    "lasso =  Lasso(alpha =0.0005, random_state=1)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 3. Implementation A using vecstack\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [
    "def model_run_times(model,X_train,y_train,X_test,y_test,times):\n",
    "    accuracyList = []\n",
    "    \n",
    "    for i in range(times):\n",
    "        model_instance = clone(model)\n",
    "        temp = UTILS.model_accuracy_plot(model_instance,X_train,y_train,X_test,y_test,draw=False)\n",
    "        # score, merror, mse, msle, medAE, r2Score = UTILS.model_accuracy_plot(model_rfr,X_train,y_train,X_test,y_test,'随机森林')\n",
    "        accuracyList.append(temp)\n",
    "    df_plot = pd.DataFrame(data=accuracyList,columns=['score', 'merror', 'mse', 'msle', 'medAE', 'r2Score'])\n",
    "    df_plot.plot()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "name": "stderr",
     "text": [
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n",
      "E:\\02Projects\\papers\\chlmodel\\models\\ML\\utils.py:13: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n  model.fit(X_train, y_train)\n"
     ],
     "output_type": "stream"
    },
    {
     "name": "stdout",
     "text": [
      "explained variance score:0.979689543098355,\nmean absolute error:0.17064098547884204,\nmean squared error:0.3132848759093755,\nmean squared log error:0.0024731089157960344 \nmedian_absolute_error:0.02543180000000045, \nr2Score:0.979630243251115\n",
      "explained variance score:0.9753107965525727,\nmean absolute error:0.1714431552783966,\nmean squared error:0.3807771197890923,\nmean squared log error:0.0023958504675783716 \nmedian_absolute_error:0.026924020000000937, \nr2Score:0.9752419031300811\n",
      "explained variance score:0.9795314879704102,\nmean absolute error:0.17169512755011135,\nmean squared error:0.31492941736754004,\nmean squared log error:0.0022124615511714897 \nmedian_absolute_error:0.02525569999999977, \nr2Score:0.9795233153013727\n",
      "explained variance score:0.9824510837767636,\nmean absolute error:0.16038785418708257,\nmean squared error:0.2704870432196513,\nmean squared log error:0.002079313311028084 \nmedian_absolute_error:0.02443315000000057, \nr2Score:0.9824129547967606\n",
      "explained variance score:0.9817670248432148,\nmean absolute error:0.15967113454342993,\nmean squared error:0.2808030295421673,\nmean squared log error:0.002080843735575479 \nmedian_absolute_error:0.024456970000000355, \nr2Score:0.9817422102183493\n",
      "explained variance score:0.9799779795926375,\nmean absolute error:0.16397484035634763,\nmean squared error:0.30840018583645895,\nmean squared log error:0.002168359182888508 \nmedian_absolute_error:0.024441459999999693, \nr2Score:0.9799478453960963\n",
      "explained variance score:0.9816926669941044,\nmean absolute error:0.16129397213808466,\nmean squared error:0.2821463542863047,\nmean squared log error:0.0021389240940415687 \nmedian_absolute_error:0.026220030000000616, \nr2Score:0.9816548673544673\n",
      "explained variance score:0.9801328842920267,\nmean absolute error:0.1692338368596882,\nmean squared error:0.3056741009055373,\nmean squared log error:0.002186835858474679 \nmedian_absolute_error:0.025118580000000112, \nr2Score:0.9801250952130831\n",
      "explained variance score:0.980711071118794,\nmean absolute error:0.1632792378841871,\nmean squared error:0.2971354165051057,\nmean squared log error:0.001920948402261052 \nmedian_absolute_error:0.02638152999999943, \nr2Score:0.9806802797673563\n",
      "explained variance score:0.9784400222966331,\nmean absolute error:0.16815312182628073,\nmean squared error:0.33193599638637816,\nmean squared log error:0.00221996402925173 \nmedian_absolute_error:0.02540157999999998, \nr2Score:0.978417548938605\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_run_times(model_rfr,X_train,y_train,X_test,y_test,10)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "name": "stderr",
     "text": [
      "D:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\n",
      "D:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\n"
     ],
     "output_type": "stream"
    },
    {
     "name": "stdout",
     "text": [
      "explained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\n",
      "explained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\nexplained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_run_times(lasso,X_train,y_train,X_test,y_test,10)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stderr",
     "text": [
      "D:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\linear_model\\_coordinate_descent.py:531: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6436.5336465747205, tolerance: 13.74648945692911\n  positive)\n"
     ],
     "output_type": "stream"
    },
    {
     "name": "stdout",
     "text": [
      "explained variance score:0.8935179973403131,\nmean absolute error:0.8392796309241951,\nmean squared error:1.6873327734112182,\nmean squared log error:0.15636364878441752 \nmedian_absolute_error:0.5781866972310592, \nr2Score:0.8902897624756375\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "[0.8935179973403131,\n 0.8392796309241951,\n 1.6873327734112182,\n 0.15636364878441752,\n 0.5781866972310592,\n 0.8902897624756375]"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 11
    },
    {
     "data": {
      "text/plain": "<Figure size 432x432 with 3 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "UTILS.model_accuracy_plot(lasso,X_train,y_train,X_test,y_test,'lasso')\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stderr",
     "text": [
      "D:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\utils\\validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n  return f(**kwargs)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\model_selection\\_split.py:297: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.\n  FutureWarning\n"
     ],
     "output_type": "stream"
    },
    {
     "name": "stdout",
     "text": [
      "task:         [regression]\nmetric:       [mean_absolute_error]\nmode:         [oof_pred_bag]\nn_models:     [1]\n\nmodel  0:     [RandomForestRegressor]\n",
      "    fold  0:  [0.03121604]\n",
      "    fold  1:  [0.09583984]\n",
      "    fold  2:  [2.67640837]\n    ----\n    MEAN:     [0.93448808] + [1.23200616]\n    FULL:     [0.93350506]\n\n",
      "explained variance score:0.9743336698529581,\nmean absolute error:0.18631811957683744,\nmean squared error:0.3998720551514505,\nmean squared log error:0.002793519717953707 \nmedian_absolute_error:0.02750339999999951, \nr2Score:0.974000352010392\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "[0.9743336698529581,\n 0.18631811957683744,\n 0.3998720551514505,\n 0.002793519717953707,\n 0.02750339999999951,\n 0.974000352010392]"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 16
    },
    {
     "data": {
      "text/plain": "<Figure size 432x432 with 3 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaUAAAGsCAYAAAB93bhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXzcVb3/8ddntsxkT9ukC22BAqXQjX2nlkVFQBSogiCIinDvdbnqT4WLgKwquKB4RctVEfeLVNlkkyu1oCBUkNJCKdBSuqdN0+yT2c7vj5mkSZomacjMfDPzfj4eeWSW78z3822Teeec7/meY845REREvMCX7wJERES6KJRERMQzFEoiIuIZCiUREfEMhZKIiHiGQklERDxDoSTiQWY238wW57sOkVxTKImMMDOrNrPP57sOkdEokO8CBqCremVUWrNmDfPnzwe4bbjv8eSTT3LdddeBfg8KleW7AK9SS0kK0g9/+EO+9KUvdd8/5ZRTeOaZZwC46667mDZtGhMnTuR//ud/urf51re+xdSpU5kyZQq/+tWvBt3H1772NSZNmsTEiRO54447ALjgggs48sgjWbduHRMmTOC0007rtf1ee+3F1KlT+eUvfznk/f72t7/l+OOPp6OjY8//IURGG+ecV79Ehm3Tpk1u1qxZzjnnWlpa3LRp01wqlXLLly93s2bNcg0NDW7z5s1u0qRJbvPmze7xxx93s2fPdo2NjW7NmjWuvLzctbS07Pb9GxoaXDAYdNu3b3fbtm1z55xzTvdza9ascXvvvXev7deuXetOOukk19ra6jZs2ODGjx/vnHO73e+TTz7p3vWud7nFixe7uXPnum3bto38P5LkU74/Xz375dnuu/ed+QG2bN3WfX987Tgeeej+PFYko8mECROoqanh7bff5sUXX+TMM8/EzPjLX/7C6tWrOfjggwHo6Ojgtdde49FHH+XCCy+kurqa6upqWlpaBnz/qqoqDjzwQL7whS9w2mmncffddw+4/dSpU/ne977Hd77zHZ588km2bNkCMOB+3377bS666CIOPfRQxo4d+w7/RURGB892323Zuo2Lbrqr+6tnQIkMxbnnnssjjzzCI488woIFC4B0z8DFF1/M5s2b2bx5M+vXr+eYY47Z5bX33nsvGzdu3O17+/1+nn/+eRYsWMBf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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_folds = 3\n",
    "models = [model_rfr]\n",
    "S_train_A_vecstack, S_test_A_vecstack = stacking(models, \n",
    "                                                 X_train, y_train, X_test, \n",
    "                                                 regression=True, \n",
    "                                                 n_folds=3,\n",
    "                                                 mode='oof_pred_bag', \n",
    "                                                 random_state=0, \n",
    "                                                 verbose=2)\n",
    "\n",
    "UTILS.plotPicturesEx(y_test.flatten(),S_test_A_vecstack.flatten(),defaultTitle='vec stack')\n",
    "UTILS.accuracyAssessment(y_test,S_test_A_vecstack)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Implementation B using vecstack"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "outputs": [
    {
     "name": "stderr",
     "text": [
      "D:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\utils\\validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n  return f(**kwargs)\nD:\\Users\\ASUS\\anaconda3\\envs\\deeplab\\lib\\site-packages\\sklearn\\model_selection\\_split.py:297: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.\n  FutureWarning\n"
     ],
     "output_type": "stream"
    },
    {
     "name": "stdout",
     "text": [
      "task:         [regression]\nmetric:       [mean_absolute_error]\nmode:         [oof_pred]\nn_models:     [1]\n\nmodel  0:     [RandomForestRegressor]\n",
      "    fold  0:  [0.03144541]\n",
      "    fold  1:  [0.10303464]\n",
      "    fold  2:  [2.68166806]\n    ----\n    MEAN:     [0.93871604] + [1.23279968]\n    FULL:     [0.93773243]\n\n    Fitting on full train set...\n\n",
      "explained variance score:0.9780043175831752,\nmean absolute error:0.1668942665256126,\nmean squared error:0.33845128304997596,\nmean squared log error:0.0020514320063456026 \nmedian_absolute_error:0.025155950000000038, \nr2Score:0.9779939255380131\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "[0.9780043175831752,\n 0.1668942665256126,\n 0.33845128304997596,\n 0.0020514320063456026,\n 0.025155950000000038,\n 0.9779939255380131]"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 21
    },
    {
     "data": {
      "text/plain": "<Figure size 432x432 with 3 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaUAAAGsCAYAAAB93bhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXhcZd3/8fc9+2RP2yTdgQKl0NJSKJtALZuCIMqO8qDog/D4ExUQFMUiAoLKJvCIggvigjwsyiabCKWIbGUrLXSBli60ado0zTr73L8/ZpImbZZJm5k5mfm8ritXMjNnzvmepskn55z7fG9jrUVERMQJXPkuQEREpJNCSUREHEOhJCIijqFQEhERx1AoiYiIYyiURETEMRRKIg5kjJljjJmX7zpEck2hJDLEjDFVxpiL8l2HyHDkyXcB/dBdvTIsrVy5kjlz5gDcsqPreP7557nqqqtAPweFyuS7AKfSkZIUpF/+8pdceumlXY+PPvpoXn75ZQDuvvtuJk2axJgxY/jNb37TtcwNN9zAxIkTmTBhAn/+858H3MaPfvQjxo4dy5gxY7jjjjsA+OIXv8iBBx7ImjVrGD16NMcdd1yP5ceNG8fEiRP505/+lPF2//rXv3LYYYcRCoUG/w8hMtxYa536IbLD1q9fb6dNm2attba1tdVOmjTJJpNJu2jRIjtt2jTb2Nho6+vr7dixY219fb195pln7L777mubmprsypUrbVlZmW1tbe1z/Y2Njdbr9drNmzfbTZs22VNOOaXrtZUrV9pddtmlx/KrVq2yRx55pG1ra7Mff/yxraurs9baPrf7/PPP209+8pN23rx5dsaMGXbTpk1D/48k+ZTv36+O/XDs6bvzv/EtNja1dD2uqa7grl/elseKZDgZPXo01dXVrF69mrfeeosTTzwRYwzPPfccK1asYJ999gEgFAqxdOlSnnrqKc4++2yqqqqoqqqitbW13/VXVlay1157cfHFF3Pcccdxzz339Lv8xIkT+cUvfsFNN93E888/z4YNGwD63e7q1as555xzmDlzJiNHjtzJfxGR4cGxp+82NrUw+ys/6ProHlAimTj11FN58sknefLJJznttNOA1JmBL33pS9TX11NfX8/atWs55JBDtnvvgw8+yLp16/pct9vt5vXXX+e0007jhRdeYObM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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "models = [LinearRegression(),model_rfr] #,Ridge()\n",
    "S_train_B_vecstack, S_test_B_vecstack = stacking(models, \n",
    "                                                 X_train, y_train, X_test, \n",
    "                                                 regression=True, \n",
    "                                                 n_folds=n_folds,\n",
    "                                                 mode='oof_pred', \n",
    "                                                 random_state=0, \n",
    "                                                 verbose=2)\n",
    "\n",
    "S_test_B_vecstack = np.maximum(S_test_B_vecstack,0)                                              \n",
    "UTILS.plotPicturesEx(y_test.flatten(),S_test_B_vecstack.flatten(),defaultTitle='vec stack')\n",
    "UTILS.accuracyAssessment(y_test,S_test_B_vecstack)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}